delve调试工具
go-delve/delve Golang 的断点调试
安装环境
go install github.com/go-delve/delve/cmd/dlv@latest
直接运行的方式
直接在服务器启动:
dlv debug --headless --listen=:2345 --api-version=2 --accept-multiclient
然后直接在 Goland 里面点击 Remote Debug 模式(不需要手动编译,直接点击 debug 模式就行了)
独立进程运行的方式
# -N 禁止编译器优化
# -l 禁止内联
go build -o hello -gcflags=all="-N -l" main.go
dlv --listen=:2345 --headless=true --api-version=2 --accept-multiclient exec ./hello
如果程序需要启动参数, 则在后面添加 –
dlv --listen=:2345 --headless=true --api-version=2 --accept-multiclient exec ./demo -- -c=/config
# 等同于
./demo -c=/config
注意:它这样不是马上启动的,而是先挂起一个监听,只有本地的 Goland 点击 Debug 模式之后才执行这个应用
通过进程 PID 的方式
# 获取服务器端运行的应用的 pid
ps aux | grep xxx
# 启动服务端应用的监听,命令如下:
dlv attach PID --headless --api-version=2 --log --listen=:2345
如果报错则尝试:
# 先切换 root 用户
su root
echo 0 > /proc/sys/kernel/yama/ptrace_scope